package com.chis.jmdatatimer.timerDto.dto;

import com.chis.jm.bean.ChilInquireBean;
import com.chis.jm.bean.TriggerDelBean;
import com.chis.jm.bean.jxc.CntstmInfoBean;
import com.chis.jm.bean.report.RpBactConfigBean;
import com.chis.jm.bean.yz.TbBactProgramSubBean;
import com.chis.jm.pojo.Child;
import com.chis.jm.pojo.Inoculation;
import com.chis.jm.pojo.TdBirthinfo;
import com.chis.jm.pojo.TdChilAnswer;
import com.chis.jm.pojo.TdChilInform;
import com.chis.jm.pojo.TdChildInfoLog;
import com.chis.jm.pojo.TdChileditdate;
import com.chis.jm.pojo.TdChilhabiChng;
import com.chis.jm.pojo.TdChiltransHand;
import com.chis.jm.pojo.TdChiltransInfo;
import com.chis.jm.pojo.TdChiltransUnit;
import com.chis.jm.pojo.TdDisease;
import com.chis.jm.pojo.TdFamilyhis;
import com.chis.jm.pojo.TdInoctemp;
import com.chis.jm.pojo.TdInoculationstation;
import com.chis.jm.pojo.TdIstabu;
import com.chis.jm.pojo.TdRefuseinoc;
import com.chis.jm.pojo.TdSpremind;
import com.chis.jm.pojo.dim.DimChilInfo;
import com.chis.jm.pojo.dim.DimChildTemp;
import com.chis.jm.pojo.dim.DimDate;
import com.chis.jm.pojo.dim.DimUnitTemp;
import com.chis.jm.pojo.dim.DimUnitbact;
import com.chis.jm.pojo.dim.LogChild;
import com.chis.jm.pojo.dim.LogInoc;
import com.chis.jm.pojo.report.TrMth1Main;
import com.chis.jm.pojo.report.TrMth1Sub;
import com.chis.jm.pojo.report.TrMth2Main;
import com.chis.jm.pojo.report.TrMth2Sub;
import com.chis.jm.pojo.sys.TbBactGroup;
import com.chis.jm.pojo.sys.TbSysEmp;
import com.chis.jm.pojo.sys.TsUnit;
import com.chis.jm.pojo.sys.TsZone;
import com.chis.jm.pojo.yz.TbYzGroupConfig;
import com.chis.jm.pojo.zabbix.TjJxcMntExc;
import com.chis.jm.pojo.zabbix.TjMntExc;
import com.chis.jmdatatimer.comm.TdJxcGpsdata;

import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 
 * @Description 
 * @Company zwx
 * @author wlj
 * @version 2018年03月05日
 */
public interface TimerDTO {



    void updateJxcExc(@Param("rid") Integer rid, @Param("data") byte[] data);

    List<CntstmInfoBean> findAllCntstmInfo();

    void updatestm(@Param("ma") String ma, @Param("bat") String bat, @Param("prodate") Date prodate);

    Date findProdate(@Param("ma") String ma, @Param("bat") String bat);

    void savezone(@Param("list") List<TsZone> list);
    void saveunit(@Param("list") List<TsUnit> list);



    public List<TjJxcMntExc> findMntExc1() throws Exception;

    public Integer findmysqliso(@Param("unitcode") String unitcode, @Param("heapcode") String heapcode);

    public List<TjMntExc> findMntExc();

    Integer stmstate(@Param("mainCode") String mainCode);
    Integer purstate(@Param("mainCode") String mainCode);
    Integer zkstate(@Param("mainCode") String mainCode);

    public List<CntstmInfoBean> findJxcCntstmsByStroage();


    public List<String> findJxcCntstmsZeroByZone(@Param("zone") String zone);

    public List<String> findcntlist(@Param("unitcode") String unitcode);

    public TbSysEmp findEmpinfo();

    public void insertBatch(List<TdJxcGpsdata> list);

    /******************************** 内存同步 ***************************************/
    /**
     * 插入或更新儿童基本信息
     *
     * @param child 儿童信息
     * @throws Exception 系统异常
     */
    public void insertChild(Child child) throws Exception;

    /**
     * 批量插入或更新儿童基本信息
     *
     * @param list 儿童信息集合
     * @throws Exception 系统异常
     */
    public void insertChildList(List<Child> list) throws Exception;

    /**
     * 更新全档案更新时间
     *
     * @param childcode 儿童编码
     * @throws Exception 系统异常
     */
    public void updateEditDate(@Param("childcode") String childcode) throws Exception;

    /**
     * 批量更新全档案更新时间
     *
     * @param list 儿童全档案更新时间
     * @throws Exception 系统异常
     */
    public void updateEditDateList(List<TdChileditdate> list) throws Exception;

    /**
     * 保存免疫史
     *
     * @param list 儿童记录集合
     * @throws Exception 系统异常
     */
    public void insertInocList(@Param("list") List<Inoculation> list) throws Exception;

    /**
     * 更新儿童单位迁移表
     *
     * @param list 儿童单位迁移记录集合
     * @throws Exception 系统异常
     */
    public void insertTransList(@Param("list") List<TdChiltransInfo> list) throws Exception;

    /**
     * 禁忌症
     *
     * @param list 禁忌症记录集合
     * @throws Exception 系统异常
     */
    public void insertIstabuList(@Param("list") List<TdIstabu> list) throws Exception;

    /**
     * 儿童特殊提醒内容
     *
     * @param list 儿童特殊提醒内容记录集合
     * @throws Exception 系统异常
     */
    public void insertSpecmindList(@Param("list") List<TdSpremind> list) throws Exception;

    /**
     * 不接种疫苗
     *
     * @param list 不接种疫苗记录集合
     * @throws Exception 系统异常
     */
    public void insertRefuseList(@Param("list") List<TdRefuseinoc> list) throws Exception;

    /**
     * 疾病史
     *
     * @param list 疾病史记录集合
     * @throws Exception 系统异常
     */
    public void insertDiseaseList(@Param("list") List<TdDisease> list) throws Exception;

    /**
     * 更新儿童表
     *
     * @param list 儿童记录集合
     * @throws Exception 系统异常
     */
    public void insertUnitList(@Param("list") List<TdChiltransUnit> list) throws Exception;

    /**
     * 更新人工迁出表
     *
     * @param list 人工迁出记录集合
     * @throws Exception 系统异常
     */
    public void insertHandList(@Param("list") List<TdChiltransHand> list) throws Exception;

    /**
     * 更新儿童表
     *
     * @param list 户籍县变更记录集合
     * @throws Exception 系统异常
     */
    public void insertHabiList(@Param("list") List<TdChilhabiChng> list) throws Exception;

    /******************************** 纬度数据生成 ***************************************/
    /**
     * 新增或修改日期维度表
     *
     * @param d 日期维度
     * @throws Exception 系统异常
     */
    public void inUpDimDate(DimDate d) throws Exception;

    /**
     * 查询儿童触发表中所有的日期，不重复
     *
     * @return 所有日期
     * @throws Exception 系统异常
     */
    public List<Date> findLogChildDate() throws Exception;

    /**
     * 查询儿童触发表的记录数
     *
     * @return 记录数
     * @throws Exception 系统异常
     */
    public Integer findLogChildCount() throws Exception;

    /**
     * 查询儿童触发表100条记录,rid顺序排序
     *
     * @return 儿童触发表集合
     * @throws Exception 系统异常
     */
    List<LogChild> findLogChildList() throws Exception;

    /**
     * 查询儿童临时表是否有小于等于年月的记录
     *
     * @param ymonth 年月
     * @return 记录数
     * @throws Exception 系统异常
     */
    public Integer findDimChildTempNum(Integer ymonth) throws Exception;

    /**
     * 根据主键查询儿童临时表
     *
     * @param d 儿童临时记录
     * @return 儿童临时记录
     * @throws Exception 系统异常
     */
    public DimChildTemp findDimChildTemp(DimChildTemp d) throws Exception;

    /**
     * 新增儿童临时表
     *
     * @param d 儿童临时表
     * @throws Exception 系统异常
     */
    public void inDimChildTemp(DimChildTemp d) throws Exception;

    /**
     * 更新儿童临时表
     *
     * @param d 儿童临时表
     * @throws Exception 系统异常
     */
    public void upDimChildTemp(DimChildTemp d) throws Exception;

    /**
     * 根据年月删除儿童临时表
     *
     * @param ymonth 年月
     * @throws Exception 系统异常
     */
    public void delDimChildTemp(Integer ymonth) throws Exception;

    /**
     * 根据单位编码+现户口类型编码作为主键查询儿童资料维度表(现位置分区表)中年月最大的一条
     *
     * @param unitCode 单位编码
     * @param accountCode 现户口类型编码
     * @param tableName 表名
     * @return 儿童资料维度
     * @throws Exception 系统异常
     */
    public DimChilInfo findMaxDimChilInfo(@Param("unitCode") Long unitCode, @Param("accountCode") Integer accountCode, @Param("tableName") String tableName)
            throws Exception;

    /**
     * 新增儿童资料维度表
     *
     * @param d 儿童资料维度表
     * @throws Exception 系统异常
     */
    public void inDimChilInfo(DimChilInfo d) throws Exception;

    /**
     * 更新儿童资料维度表
     *
     * @param d 儿童资料维度表
     * @throws Exception 系统异常
     */
    public void upDimChilInfo(DimChilInfo d) throws Exception;

    /**
     * 查询免疫史(临时)触发表中所有的日期，不重复
     *
     * @return 免疫史(临时)触发表中所有的日期
     * @throws Exception 系统异常
     */
    public List<Date> findLogInocDate() throws Exception;

    /**
     * 查询免疫史(临时)触发表的记录数
     *
     * @return 记录数
     * @throws Exception 系统异常
     */
    public Integer findLogInocCount() throws Exception;

    /**
     * 查询免疫史(临时)触发表随机100条记录
     *
     * @return 免疫史触发表记录
     * @throws Exception 系统异常
     */
    public List<LogInoc> findLogInocList() throws Exception;

    /**
     * 查询单位维度临时表是否有小于等于日期的记录
     *
     * @param did 日期
     * @return 记录数
     * @throws Exception 系统异常
     */
    public Integer findDimUnitTempNum(Integer did) throws Exception;

    /**
     * 根据主键查询单位维度临时表
     *
     * @param d 单位维度临时表
     * @return 单位维度临时表
     * @throws Exception 系统异常
     */
    public DimUnitTemp findDimUnitTemp(DimUnitTemp d) throws Exception;

    /**
     * 新增单位维度临时表
     *
     * @param d 单位维度临时表
     * @throws Exception 系统异常
     */
    public void inDimUnitTemp(DimUnitTemp d) throws Exception;

    /**
     * 更新单位维度临时表
     *
     * @param d 单位维度临时表
     * @throws Exception 系统异常
     */
    public void upDimUnitTemp(DimUnitTemp d) throws Exception;

    /**
     * 根据日期删除单位维度临时表
     *
     * @param did 日期
     * @throws Exception 系统异常
     */
    public void delDimUnitTemp(Integer did) throws Exception;

    /**
     * 新增或修改单位疫苗维度表
     *
     * @param d 单位维度表
     * @throws Exception 系统异常
     */
    public void inUpDimUnitbact(DimUnitbact d) throws Exception;

    /**
     * 根据儿童编码查询户口编码、现管理单位
     *
     * @param chilCode 儿童编码
     * @return 户口编码、现管理单位
     * @throws Exception 系统异常
     */
    public List<Map<String, Object>> findChildUnitCode(Long chilCode) throws Exception;

    /**
     * 查找免疫史
     * @param childCode 儿童编码
     * @return 免疫史
     * @throws Exception 异常
     */
    public List<Inoculation> findChildInoc(@Param("childCode") String childCode) throws Exception;

    /**
     * 查询儿童新
     * @param childCode 儿童编码
     * @return 儿童编码
     * @throws Exception 异常
     */
    public Child findChildInfo(@Param("childCode") String childCode) throws Exception;

    /**
     * 更新儿童档案日志
     * @param tdChildInfoLog 儿童档案
     * @throws Exception 异常
     */
    public void insertChildInfoLog(TdChildInfoLog tdChildInfoLog) throws Exception;

    /**
     * 更新儿童日志
     * @param childCode 儿童日志
     * @throws Exception 异常
     */
    public void insertChildLog(@Param("childCode") Long childCode) throws Exception;

    /**
     * 根据单位编码查询地区编码
     * @param unitCode 单位编码
     * @return 地区编码
     * @throws Exception 异常
     */
    public Long findZonegbByunit(Long unitCode) throws Exception;

    /**************6-1报表查询*******************************/
    /**
     * 根据地区编码查询所有的接种点单位编码
     * @param zoneGb 地区编码
     * @return 接种点单位集合
     * @throws Exception 异常
     */
    public List<Long> findYfjzUnitCode(@Param("zoneGb") String zoneGb) throws Exception;

    /**
     * 根据单位编码查询各单位最新的6-1报表统计年月
     * @param unitCodes 单位编码集合
     * @return 各单位最新的6-1报表统计年月
     * @throws Exception 异常
     */
    public List<TrMth1Main> findMaxMth1MainByUnit(@Param("unitCodes") String unitCodes) throws Exception;

    /**
     * 根据单位编码查询各单位最新的6-2报表统计年月
     * @param unitCodes 单位编码集合
     * @return 各单位最新的6-2报表统计年月
     * @throws Exception 异常
     */
    public List<TrMth2Main> findMaxMth2MainByUnit(@Param("unitCodes") String unitCodes) throws Exception;

    /**
     * 查询6-1报表对应的免疫程序
     * @param rpType 所属报表类别
     * @return 6-1报表对应的免疫程序
     * @throws Exception 异常
     */
    public List<TbBactProgramSubBean> findMthProgramSub(Integer rpType) throws Exception;

    /**
     * 保存或更新6-1主表
     * @param trMth1MainResult 主表集合
     */
    public void saveTrMth1Main(@Param("trMth1MainResult") List<TrMth1Main> trMth1MainResult);

    /**
     * 保存或更新6-1子表
     * @param trMth1SubResult 子表集合
     */
    public void saveTrMth1Sub(@Param("trMth1SubResult") List<TrMth1Sub> trMth1SubResult);

    /**
     * 保存或更新6-2主表
     * @param trMth2MainResult 主表集合
     */
    public void saveTrMth2Main(@Param("trMth2MainResult") List<TrMth2Main> trMth2MainResult);

    /**
     * 保存或更新6-2子表
     * @param trMth2SubResult 子表集合
     */
    public void saveTrMth2Sub(@Param("trMth2SubResult") List<TrMth2Sub> trMth2SubResult);
    //*******************city服务复制***************************//
    /**
     * 查询应种配置
     * @return 应种配置
     * @throws Exception 异常
     */
    public List<TbYzGroupConfig> findTbYzGroupConfig() throws Exception;

    /**
     * 根据免疫主表获取免疫程序子表
     * @param progCode 免疫主表编码
     * @return 免疫程序子表
     * @throws Exception 异常
     */
    public List<TbBactProgramSubBean> findProgramSubByMain(@Param("progCode") String progCode) throws Exception;

    /**
     * 获取所有疫苗编码的免疫程序
     * @return 免疫程序
     * @throws Exception 异常
     */
    public List<TbBactProgramSubBean> findProgramSub() throws Exception;

    /**
     * 查询疫苗编码和分组疫苗
     * @return 针次分组子表
     * @throws Exception 异常
     */
    public List<TbBactGroup> findTbBactGroup() throws Exception;


    /**
     * 查询报表疫苗集中配置
     * @param rpType 所属报表类别
     * @return 报表疫苗集中配置集合
     * @throws Exception 异常
     */
    public List<RpBactConfigBean> findRpBactConfig(Integer rpType) throws Exception;

    /**
     * 更新儿童询问诊表
     *
     * @param list 儿童询问诊表记录集合
     * @throws Exception 系统异常
     */
    public void insertInquireList(@Param("list") List<ChilInquireBean> list) throws Exception;

    /**
     * 更新询问诊答案列表
     *
     * @param list 询问诊答案列表集合
     * @throws Exception 系统异常
     */
    public void insertAnswerList(@Param("list") List<TdChilAnswer> list) throws Exception;

    /**
     * 更新儿童知情告知记录表
     *
     * @param list 儿童知情告知记录表集合
     * @throws Exception 系统异常
     */
    public void insertInformList(@Param("list") List<TdChilInform> list) throws Exception;

    /**
     * 更新家族史表
     *
     * @param list 家族史
     * @throws Exception 系统异常
     */
    public void insertFamilyhis(TdFamilyhis list) throws Exception;

    /**
     * 批量插入更新家族史表
     *
     * @param list 家族史集合
     * @throws Exception 系统异常
     */
    public void insertFamilyhisList(List<TdFamilyhis> list) throws Exception;

    /**
     * 新生儿出生状况表
     *
     * @param list 新生儿出生状况
     * @throws Exception 系统异常
     */
    public void insertBirthinfo(TdBirthinfo list) throws Exception;

    /**
     * 批量插入新生儿出生状况表
     *
     * @param list 新生儿出生状况集合
     * @throws Exception 系统异常
     */
    public void insertBirthinfoList(List<TdBirthinfo> list) throws Exception;

    /**
     * 物理库数据标删
     * @param list 需要标删的数据
     * @throws Exception 异常
     */
    public void delmarkData(List<TriggerDelBean> list) throws Exception;

    /**
     * 标删儿童的其他所有表
     * @param list <表名，儿童编码集合>
     * @throws Exception 异常
     */
    public void delmarkAllByChilds(List<String[]> list) throws Exception;

    /**
     * 物理删除数据
     * @param list 需要删除的数据<表名，主键集合>
     * @throws Exception 异常
     */
    public void delSqlData(List<String[]> list) throws Exception;

    /**
     * 新增或更新数字化门诊记录表
     * @param list 数字化门诊记录表
     * @throws Exception 异常
     */
    public void saveOrUpInocstation(List<TdInoculationstation> list) throws Exception;

    /**
     * 新增临时接种表记录
     * @param list 临时接种表记录
     * @throws Exception 异常
     */
    public void saveOrUpInoctemp(List<TdInoctemp> list) throws Exception;

    /**
     * 查询更新时间
     * @param list 数据<表名，主键集合>
     * @return 数据<主键，更新时间>
     * @throws Exception 异常
     */
    public List<Map<String,Object>> findUptimeByguids(List<TriggerDelBean> list) throws Exception;
    /**
     * 查询更新时间
     * @param codes 主键集合
     * @return 数据<主键，更新时间>
     * @throws Exception 异常
     */
    public List<Map<String,Object>> findChileditUptime(@Param("codes") String codes) throws Exception;

    /**
     * 批量更新儿童全档案更新时间
     * @param childcode 儿童编码，逗号隔开
     * @throws Exception 异常
     */
    public void updateChildEditDateBatch(@Param("childcode") String childcode) throws Exception;

    /**
     * 删除答案
     * @param inquireBeanList 儿童询问诊表集合
     * @throws Exception 异常
     */
    public void delAnswerListByMain(@Param("list") List<ChilInquireBean> inquireBeanList) throws Exception;

    /**
     * 批量添加儿童信息表(省里用,不更新会员4个字段)
     *
     * @param list 儿童信息集合
     * @throws Exception 系统异常
     */
    public void insertProChildList(List<Child> list) throws Exception;

}
